package com.cslc.mp.service;

import net.sf.json.JSONObject;

import com.cslc.mp.bean.menu.Menu;
import com.cslc.mp.bean.message.custommessage.CustomMessage;

/**
 * 核心接口定义
 * @author keliangliang
 *
 */
public interface CoreService {
	/**
	 * 自定义菜单创建接口,自定义菜单配置
	 * @param menu
	 * @return
	 * @see http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html
	 */
	JSONObject menuCreate(Menu menu);
	
	/**
	 * 自定义菜单创建接口,从文件中获取菜单配置
	 * @param fileName
	 * @return
	 * @see http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html
	 */
	JSONObject menuCreate(String fileName);
	
	/**
	 * 自定义菜单查询接口
	 * @return
	 * @see http://mp.weixin.qq.com/wiki/16/ff9b7b85220e1396ffa16794a9d95adc.html
	 */
	JSONObject menuGet();
	
	/**
	 * 自定义菜单删除接口
	 * @return
	 * @see http://mp.weixin.qq.com/wiki/16/8ed41ba931e4845844ad6d1eeb8060c8.html
	 */
	JSONObject menuDelete();
	
	/**
	 * 获取永久素材总数
	 * @see http://mp.weixin.qq.com/wiki/16/8cc64f8c189674b421bee3ed403993b8.html
	 * @return
	 */
	JSONObject materialCountGet();
	
	/**
	 * 通过media_id获取临时素材，http头中返回
	 * @param mediaId
	 * @return
	 */
	void tempMaterialGet(String mediaId);
	
	/**
	 * 获取用户基本信息，开发者可通过OpenID来获取用户基本信息。请使用https协议。 
	 * @see http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html
	 * @param openId
	 * @return
	 */
	JSONObject userInfoGet(String openId);
	
	/**
	 * 通过code换取网页授权access_token，以及openid
	 * @see http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
	 * @return
	 */
	JSONObject oauth2AcessGet(String code);
	
	/**
	 * 发送客服消息
	 * @see http://mp.weixin.qq.com/wiki/7/12a5a320ae96fecdf0e15cb06123de9f.html
	 * @param message
	 * @return
	 */
	JSONObject customMessageSend(CustomMessage message);
	
	/**
	 * 获取客服所有账号
	 * @see http://mp.weixin.qq.com/wiki/1/70a29afed17f56d537c833f89be979c9.html
	 * @return
	 */
	JSONObject kfListGet();
	
	/**
	 * 创建临时二维码ticket
	 * @see http://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html
	 * @return
	 */
	JSONObject tempTicketCreate();
	
	/**
	 * 创建永久二维码ticket
	 * @see http://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html
	 * @param 终端编码
	 * @return
	 */
	JSONObject permTicketCreate(String terminalNo);
	
	/**
	 * 通过ticket换取二维码
	 * 获取二维码ticket后，开发者可用ticket换取二维码图片。
	 * @param ticket
	 * @return
	 */
	JSONObject qrCodeShow(String ticket);
	
}
